An ordinary PC has one monitor and one keyboard. The keyboard is typically connected to the PC by a keyboard cable that plugs into a keyboard port (e.g., PS/2 mini-DIN port) on the back of the machine and the monitor is typically connected to the PC by a monitor cable that plugs into a monitor port (e.g., a 15 pin VGA monitor port) on the back of the PC. The monitor port is conventionally part of a graphics card that is in the form of a circuit board inside of the computer. The graphics card in such computing systems is responsible for displaying graphics onto the monitor.
The keyboard is often referred to as an input mechanism to the PC. A typical PC also includes a mouse as another input mechanism. As used herein, all references to “keyboard” refers to the keyboard and/or the mouse.
Some computing systems include multiple keyboards and multiple monitors. During the operation of such computing systems, different users sit at separate keyboards. Each user is typically required to log onto the computing system with a unique logon id and each user's work is often displayed on a separate monitor. These types of computing systems require some mechanism (hardware or software) that associates a particular keyboard with one or more particular monitors.
On Unix systems, a graphics card is often referred to as a “pipe” and each keyboard and pipe combination is often referred to as an “X server”. An X server represents a single user's logon session via hardware that is directly connected to that computer. An X server does not represent being connected to the computer from another computer via a network. During operation of the computing system a user can log onto an X server to enter data on the keyboard, move the mouse, and see information on the monitor. A second user, with a separate keyboard and monitor, can log onto a separate X server. When the first user enters data on his keyboard, it is delivered through his own pipe (i.e., the pipe that is associated with that keyboard in a configuration file) to one or more monitors. The first user's interaction with the computer is totally independent of the work being done by the second user because the second user is logged on to a separate X server.
The file that pairs up keyboards with pipes is often referred to as an “X server configuration file”. The number of users that may simultaneously log on to the computing system is limited to the number of X servers that are defined in the X server configuration file.
A schematic of a simple X server configuration file might look like:X Server :0=keyboard0+pipe0X Server :1=keyboard1+pipe1X Server :2=keyboard3+pipe8
In some computing systems it is desirable to have more than one monitor port on each graphics card. For example, setting up two monitors side by side can provide a “double wide” display. In other computing systems, a plurality of monitors could be set up in an array to show a single super-size display.
Dividing the display of a single pipe into multiple parts is often called “channeling.” Graphic cards, or pipes, that include multiple ports can be said to have “multi-channel” capability. The number of ports on the pipes (i.e., graphics cards) in a computing system depends on the design of the computing system. It should be noted that channels are not defined or referred to in the X server configuration file.
Depending on the application, it is often desirable for the X server configuration file to establish one or more “multi-pipe” configurations such that two or more pipes service a single keyboard. Note that the number of pipes in a particular X server is independent of the number of channels that a corresponding display is rendered on. However, using additional pipes to transmit a display along a particular X server increases the capability of the computing system to send graphics to whatever amount of monitors that are attached to the pipes.
An example X server configuration file for such a multi-pipe arrangement might look like:X Server :0=keyboard0+pipe0X Server :1=keyboard1+pipe1X Server :2=keyboard3+pipe6+pipe7
In an environment where there are many keyboards and monitors, it is desirable to be able to easily change which keyboards are connected to which keyboard ports and which monitors are connected to which monitor ports. One mechanism for accomplishing this is a device known as a “matrix switch”, or hub. Conventional matrix switches are sold by companies such as Lightwave, Extron, and Blackbox.
One such matrix switch includes several input ports and output ports such that any input port may be connected to any output port by reconfiguring the matrix switch. In some embodiments, keyboard and graphics card resources in a computer are connected to the input side of the matrix switch and the actual keyboard and monitor devices are connected to the output side.
The keyboard and graphics card resources are typically routed to the keyboard and monitor devices via software internal to the matrix switch as opposed to physically maneuvering the switch. In existing computing systems, a switch administrator operates the software that runs the matrix switch by issuing a command to the switch using a serial port on the matrix switch. Typical commands include “connect input 1 to output 7”, or “disconnect input 2 from output 6”. Some matrix switches allow one input signal to be “broadcast” to several outputs (e.g., “connect input 6 to outputs 6 and 7 and 2”). The use of port numbers and cryptic command syntax makes it difficult for a system administrator to manage the computing resources of an entire computing community.
Even a simple matrix switch yields several possible configurations. The complexity and number of combinations grows as more inputs and outputs are added to the matrix switch. The number of inputs and outputs depends on the design of the computing system and the desired number of users and locations where users can utilize the computing system.
During operation of such a computing system, an X server can be utilized by a user or may be idle (no one logged in). Users typically have the ability to log onto the computer system from multiple locations.
In addition, many computing systems are able to broadcast a single video input from one or more graphics cards (i.e., pipes) to multiple destinations. In these types of computing systems, the same display can be delivered to monitors in different locations.
Managing a matrix switch as part of the operation of such a system can be quite complex using existing software. Effective management of the computing resources attached to a matrix switch involves more than just making and breaking connections. The decisions on what to connect and disconnect are often based on information from the operating system about login sessions and X server configuration. Obtaining and correlating this type of information can be a cumbersome task using conventional systems. What is needed is a system and method that allows a system administrator to quickly and simply operate a matrix switch to allocate computing resources.